package com.ruoyi.erecord.region.service;

import cn.hutool.core.lang.tree.Tree;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.erecord.region.domain.bo.RegionBo;
import com.ruoyi.erecord.region.domain.vo.RegionVo;

import java.util.Collection;
import java.util.List;

/**
 * 区域Service接口
 *
 * @author cc
 * @date 2023-04-19
 */
public interface IRegionService {

    /**
     * 查询区域
     */
    RegionVo queryById(String id);

    /**
     * 查询区域列表
     */
    TableDataInfo<RegionVo> queryPageList(RegionBo bo, PageQuery pageQuery);

    /**
     * 查询区域列表
     */
    List<RegionVo> queryList(RegionBo bo);

    /**
     * 新增区域
     */
    Boolean insertByBo(RegionBo bo);

    /**
     * 修改区域
     */
    Boolean updateByBo(RegionBo bo);

    /**
     * 校验并批量删除区域信息
     */
    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);

    List<Tree<String>> treeList(RegionBo region);

    List<Tree<String>> treeListByGrade(int grade);

    List<RegionVo> listByGrade(int grade);

    String getRegionNameById(String id);

    String getRegionIdByName(String name);

    boolean existsRegionCode(String code);

    boolean existsRegionName(String name);

    long childrenSelectById(String id);
}
